spin_lock(&hd->mapping_lock);
- if ( is_hvm_domain(d) && !hd->p2m_synchronized )
- goto out;
-
iommu_l2e = iommu_l2e_from_pfn(hd->root_table, hd->paging_mode, gfn);
if ( iommu_l2e == 0 )
{
}
set_iommu_l1e_present(iommu_l2e, gfn, (u64)mfn << PAGE_SHIFT, iw, ir);
-out:
spin_unlock(&hd->mapping_lock);
return 0;
}
spin_lock(&hd->mapping_lock);
- if ( is_hvm_domain(d) && !hd->p2m_synchronized )
- {
- spin_unlock(&hd->mapping_lock);
- return 0;
- }
-
iommu_l2e = iommu_l2e_from_pfn(hd->root_table, hd->paging_mode, gfn);
if ( iommu_l2e == 0 )
page_list_for_each ( page, &d->page_list )
{
- if ( (page->u.inuse.type_info & PGT_type_mask) == PGT_writable_page )
+ if ( is_hvm_domain(d) ||
+ (page->u.inuse.type_info & PGT_type_mask) == PGT_writable_page )
{
rc = hd->platform_ops->map_page(
d, mfn_to_gmfn(d, page_to_mfn(page)), page_to_mfn(page));